﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Wedn.DAL;
using Wedn.Model.Data;

namespace Wedn.BLL.Data
{
    /// <summary>
    /// 关系管理抽象类不可被实例化(初步审核通过)
    /// </summary>
    public class RelationsManager
    {
        #region 增加关系
        /// <summary>
        /// 向关系表中插入一行数据, 返回执行是否成功
        /// </summary>
        /// <param name="relation">要插入的对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Insert(Relation relation)
        {
            return RelationsDAO.Insert(relation) > 0 ? true : false;
        }
        #endregion

        #region 删除关系

        #region 删除一条
        /// <summary>
        /// 根据id删除对应的关系记录, 返回执行是否成功
        /// </summary>
        /// <param name="relationid">要删除记录的ID</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int relationid)
        {
            return RelationsDAO.Delete(relationid) > 0 ? true : false;
        }
        #endregion

        #region 删除多条
        /// <summary>
        /// 根据id数组删除对应的关系记录, 返回执行是否成功
        /// </summary>
        /// <param name="relationids">要删除记录的ID数组</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int[] relationids)
        {
            string ids = string.Join(",", relationids);
            return RelationsDAO.Delete(ids) == relationids.Length ? true : false;
        }
        #endregion

        #endregion

        #region 更新关系
        /// <summary>
        /// 更新一个关系对象, 返回执行是否成功
        /// </summary>
        /// <param name="relation">要更新的对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Update(Relation relation)
        {
            return RelationsDAO.Update(relation) > 0 ? true : false;
        }
        #endregion

        #region 选取关系

        #region 获取表中主键最大值
        /// <summary>
        /// 获取表中主键最大值
        /// </summary>
        /// <returns>主键最大值</returns>
        public static int GetMaxId()
        {
            return RelationsDAO.GetMaxId();
        }
        #endregion

        #region 选取全部关系
        /// <summary>
        /// 取出当前关系表中的所有关系信息集合
        /// </summary>
        /// <returns>包涵所有关系信息集合</returns>
        public static List<Relation> GetRelations()
        {
            return RelationsDAO.SelectRelations();
        }
        #endregion

        #region 根据对象ID和对象类型选取全部关系集合
        /// <summary>
        /// 根据对象ID和对象类型取出当前关系表中的所有关系信息集合
        /// </summary>
        /// <returns>包涵指定对象关系信息集合</returns>
        public static List<Relation> GetRelations(int objectid, string objectType)
        {
            return RelationsDAO.SelectRelations(objectid, objectType);
        }
        #endregion

        #region 根据ID选取关系对象
        /// <summary>
        /// 根据关系ID取出当前关系表中的关系信息对象
        /// </summary>
        /// <returns>关系信息对象</returns>
        public static Relation GetRelation(int relationid)
        {
            return RelationsDAO.SelectRelation(relationid);
        }
        #endregion

        #region 根据标签ID取出当前关系表存在个数
        /// <summary>
        /// 根据标签ID取出当前关系表存在个数
        /// </summary>
        /// <returns>个数</returns>
        public static int GetTermCount(int termid)
        {
            return RelationsDAO.SelectTermCount(termid);
        }
        #endregion

        #endregion
    }
}
